package main

import (
	"fmt"
	"strings"
)

func isValid(s string) bool {
	if len(s) == 0 {
		return false
	}

	//s1 := s
	//s2 := Factorial(s1)
	//if s2 != "" {
	//	return false
	//}
	//return true
	a := "()"
	b := "[]"
	c := "{}"
	s2 := s
	for i := 0; i < len(s); i++ {
		x := len(s2)
		s2 = strings.ReplaceAll(s2, a, "")
		s2 = strings.ReplaceAll(s2, b, "")
		s2 = strings.ReplaceAll(s2, c, "")
		if len(s2) == 0 {
			return true
		}
		if len(s2) == x {
			return false
		}
	}
	return true
}

//func Factorial(s1 string) (s2 string) {

//	for a, ch := range s1 {
//		if a == len(s1)-1 {
//			if s2 == "" {
//				return s2
//			}
//			return "false"
//		}
//		switch string(ch) {
//		case "(":
//			{
//				if a == len(s1)-1 {
//					return "false"
//				} else if string(s1[a+1]) == ")" {
//					s2 = s1[:a] + s1[a+2:]
//
//				}
//			}
//		case "[":
//			{
//				if a == len(s1)-1 {
//					return "false"
//				} else if string(s1[a+1]) == "]" {
//					s2 = s1[:a] + s1[a+2:]
//
//				}
//			}
//		case "{":
//			{
//				if a == len(s1)-1 {
//					return "false"
//				} else if string(s1[a+1]) == "}" {
//					s2 = s1[:a] + s1[a+2:]
//
//				}
//			}
//		default:
//			s2 = s1
//
//		}
//	}
//
//	if s2 == "false" {
//		return "false"
//	} else if s2 != "" {
//
//		Factorial(s2)
//	}
//
// return s2
// a := "()"
// b := "[]"
// c := "{}"
//
//	for i := 0; i < len(s1); i++ {
//		x := len(s2)
//		s2 := removeSubstring(s1, a)
//		s2 = removeSubstring(s2, b)
//		s2 = removeSubstring(s2, c)
//		if len(s2) == 0 {
//			return true
//		}
//		if len(s2) == x {
//		return false
//		}
//	}
//
// }
// }
func main() {
	fmt.Println(isValid("([)]"))
	fmt.Println(isValid("(((("))
	fmt.Println(isValid("()[]{]"))
	fmt.Println(isValid("}"))
	fmt.Println(isValid("{[()}]"))
	fmt.Println(isValid(""))
	fmt.Println(isValid("([])"))
	fmt.Println(isValid("()"))
	fmt.Println(isValid("()[]{}"))

	//s := "()"
	//substr := "()"
	//
	//// 去掉指定的子串后定义新的字符串 s2
	//s2 := removeSubstring(s, substr)
	//fmt.Println(s2) // 输出: {[}]
	//a := 0
	//fmt.Println(s[:a] + s[a+2:])

}
